<?php
/*
文章审核


软删除，就是使用标记位标记来实现软删除，实际上文章没有从数据库中删除
在posts表中加入status字段  1通过 0未知 -1删除 默认是0;

审核要面临先审后发，status只有1，还是先发后审，在前台中status就有0和1，工作中实际使用的是先发后审！
*/
//匿名的全局作用域 模型Posts.php，在post模型只能获取制指定数据，
//重写boot函数，在所有的页面都会带上这个scope
protected static function boot()
{
    parent::boot();
    static::addGlobalScope('avaiable', function(Builder $builder) {
        $builder->whereIn('status',[0,1]);
    });
}


//路由
Route:get('/admin/posts','Admin\PostController@index');
Route::post('/admin/posts/{post}/status','Admin\PostController@status');


//控制器Admin\PostController中
//页面展示
public function index(){
    //获取status是0的数据
  $posts = Post::withoutGlobalScope('avaiable')->where('status',0)->latest()->paginate(10);
  return view();
}

//数据审核
public function status(Request $request,Post $post){
  $this->validate($request, [
      "status" => 'required|in:-1,1',
  ]);

  $post->status = $request->input('status');
  $post->save();
  //直接return一个数组返回的就是json,'
  return [
      'error' => 0,
      'msg' => ''
  ];
}


//视图文件中：
<section class="content">
    <!-- Small boxes (Stat box) -->
    <div class="row">
        <div class="col-lg-10 col-xs-6">
            <div class="box">
                <div class="box-header with-border">
                    <h3 class="box-title">文章列表</h3>
                </div>
                <!-- /.box-header -->
                <div class="box-body">
                    <table class="table table-bordered">
                        <tbody><tr>
                            <th style="width: 10px">#</th>
                            <th>文章标题</th>
                            <th>操作</th>
                        </tr>
                        @foreach($posts as $post)
                        <tr>
                            <td>{{$post->id}}.</td>
                            <td>{{$post->title}}</td>
                            <td>
                                <button type="button" class="btn btn-block btn-default post-audit" post-id="{{$post->id}}" post-action-status="1" >通过</button>
                                <button type="button" class="btn btn-block btn-default post-audit" post-id="{{$post->id}}" post-action-status="-1" >拒绝</button>
                            </td>
                        </tr>
                        @endforeach
                        </tbody></table>
                </div>
                {{$posts->links()}}
            </div>
        </div>
    </div>
</section>


//js文件中
//当要利用js进行post传递数据时候，要在header中加<meta name="csrf-token" content="{{csrf_token()}}" >
$(.post-audit).click(function(event){
  target = $(event.target);
  var post_id = target.attr("post_id");
  var status = target.attr("post-action-status");
  $.ajax({
       url:"/admin/posts" + post_id + "/status",
       type:"post",
       data:{'status':status},
       dataType:"json",
       success:function(data){
          if (data.error != 0) {
            alert(data.msg);
            return;
          }
          target.parent().parent().remove();
       }
  });
});
